package modules.dimensioning;

import javax.naming.directory.InvalidAttributesException;

import modules.dimensioning.solution.Solution;


import datatypes.Antenna;
import datatypes.RadiationPoint;

/**
 * Interface voor methodes die gebruikt gaan worden vanuit de heuristiek
 * 
 * @author Bart Moens
 */
public interface LegislationInterface {
	
	/**
	 * Checks if a solution exceeds the maximum allowed SAR near the last-changed antenna
	 * Method clusters results so that all connected radiation exceeding points are merged
	 * 
	 * @param s Solution to check
	 * @return Array of points where radiation is exceeded
	 */
	RadiationPoint[] getRadiationExceedingPoints(Solution s) throws InvalidAttributesException;
	
	/**
	 * Calculates the maximum allowable power for the antenna
	 * 
	 * @param antenna Antenna to check
	 * @return Maximum power in dB
	 */
	double getMaximumAntennaPower(Antenna antenna) throws InvalidAttributesException;

    void printExceedingRadiationPoints();
    void writeRadiationPoints2shapefile();
    void writeRadiationPoints2shapefile(String filename);

    void setREBEGIN(boolean what);
}
